package com.itheima.work;

import java.util.concurrent.Semaphore;

/**
 * @auther Macrydy
 * @date 2020/7/9 19:40
 * 请使用Semaphore编写一个程序，实现以下效果：有10名游客要参观展览室，而“展览室”同时只允许最多“三个游客”参观，每个游客参观时间2秒。
 */
public class Test5 {
    public static void main(String[] args) {
        Person person = new Person();
        for (int i = 0; i < 10; i++) {
            new Thread(person).start();
        }
    }
}


class Person implements Runnable {
    //1.获得管理员对象，
    private Semaphore semaphore = new Semaphore(3);
    @Override
    public void run() {
        //2.获得通行证
        try {
            semaphore.acquire();
            //3.开始行驶
            System.out.println(Thread.currentThread().getName()+"正在参观");
            Thread.sleep(2000);
            System.out.println(Thread.currentThread().getName()+"参观完毕");
            //4.归还通行证
            semaphore.release();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}